package com.example.softwareconfigurationcoursedesign.Admin;

import com.example.softwareconfigurationcoursedesign.LoginRegister.User;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class AdminServlet implements AdminServletImplement {
    // 数据库连接信息，请根据你的实际情况进行修改
    private static final String DB_URL = "jdbc:mysql://localhost:3306/course_design";  // 数据库URL
    private static final String DB_USERNAME = "root";  // 数据库用户名
    private static final String DB_PASSWORD = "123456";  // 数据库密码

    // 获取数据库连接
    @Override
    public Connection getConnection() throws SQLException {
        return DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD); // 返回数据库连接
    }

    // 从数据库中获取会员列表
    @Override
    public List<User> getUserListFromDatabase() {
        List<User> userList = new ArrayList<>(); // 创建一个空的用户列表

        try (Connection connection = getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM users"); ResultSet resultSet = statement.executeQuery()) {
            // 尝试建立数据库连接，执行查询语句，获取结果集

            while (resultSet.next()) { // 遍历结果集
                String userId = resultSet.getString("uid"); // 获取用户ID
                String name = resultSet.getString("name"); // 获取用户名
                String phoneNumber = resultSet.getString("phone_number"); // 获取用户电话号码
                String password = resultSet.getString("password"); // 获取用户密码

                User user = new User(1, name, phoneNumber, password); // 创建用户对象
                userList.add(user); // 将用户添加到用户列表
            }
        } catch (SQLException e) {
            e.printStackTrace(System.err);  // 打印异常信息
        }

        return userList; // 返回用户列表
    }

    // 添加会员到数据库
    @Override
    public void addUserToDatabase(User user) {
        try (Connection connection = getConnection(); PreparedStatement statement = connection.prepareStatement("INSERT INTO users (name, phone_number, password) VALUES (?, ?, ?)")) {
            statement.setString(1, user.getName()); // 设置用户姓名
            statement.setString(2, user.getPhoneNumber()); // 设置用户电话号码
            statement.setString(3, user.getPassword()); // 设置用户密码
            statement.executeUpdate();  // 执行插入操作
            System.out.println("增加会员");  // 输出信息
        } catch (SQLException e) {
            e.printStackTrace(System.err);  // 打印异常信息
        }
    }

    // 编辑会员信息
    @Override
    public void editUserInDatabase(User user) {
        try (Connection connection = getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE users SET name=?, phone_number=?, password=? WHERE uid=?")) {
            statement.setString(1, user.getName()); // 设置用户姓名
            statement.setString(2, user.getPhoneNumber()); // 设置用户电话号码
            statement.setString(3, user.getPassword()); // 设置用户密码
            statement.setInt(4, user.getUserId()); // 设置用户ID
            statement.executeUpdate();  // 执行更新操作
        } catch (SQLException e) {
            e.printStackTrace(System.err);  // 打印异常信息
        } finally {
            System.out.println("编辑会员");  // 输出信息
        }
    }

    // 从数据库中删除会员
    @Override
    public void deleteUserFromDatabase(int userId) {
        try (Connection connection = getConnection(); PreparedStatement statement = connection.prepareStatement("DELETE FROM users WHERE uid=?")) {
            statement.setInt(1, userId); // 设置要删除的用户ID
            statement.executeUpdate();  // 执行删除操作
        } catch (SQLException e) {
            e.printStackTrace(System.err);  // 打印异常信息
        } finally {
            System.out.println("删除会员");  // 输出信息
        }
    }

    @Override
    public User getUserById(int userIdToEdit) throws ClassNotFoundException {
        String sql = "SELECT * FROM users WHERE uid = ?"; // 设置查询语句

        Class.forName("com.mysql.cj.jdbc.Driver");  // 加载数据库驱动
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/course_design", "root", "123456"); PreparedStatement statement = connection.prepareStatement(sql)) {
            statement.setInt(1, userIdToEdit); // 设置要查询的用户ID

            try (ResultSet resultSet = statement.executeQuery()) { // 获取结果集
                if (resultSet.next()) { // 如果有结果
                    int userId = Integer.parseInt(resultSet.getString("uid")); // 获取用户ID
                    String name = resultSet.getString("name"); // 获取用户名
                    String phoneNumber = resultSet.getString("phone_number"); // 获取用户电话号码
                    String password = resultSet.getString("password"); // 获取用户密码
                    return new User(userId, phoneNumber, name, password); // 返回用户对象
                }
            }
        } catch (SQLException e) {
            e.printStackTrace(System.err);  // 打印异常信息
        }
        return null; // 如果没有找到用户，则返回空
    }
}